#include <iostream>
using namespace std;
typedef struct node
{
    int data;
    struct node *next;
}LNode,*Linklist;
/*头插法*/
void List_HeadInsert(Linklist &L){
    LNode *s;
    int x;
    L=(Linklist)malloc(sizeof(LNode));
    L->next=NULL;
    cin>>x;
    while (x!=EOF)//EOF指的是-1
    {
        s=(Linklist)malloc(sizeof(LNode));
        s->data=x;
        s->next=L->next;
        L->next=s;
        cin>>x;
    }
}
/*尾插法*/
void List_TailInsert(Linklist &L){
    int x;
    L=(Linklist)malloc(sizeof(LNode));
    LNode *s,*r=L;
    cin>>x;
    while (x!=EOF)
    {
        s=(Linklist)malloc(sizeof(LNode));
        s->data=x;
        s->next=NULL;
        r->next=s;
        r=s;
        cin>>x;
    }
}
/*按值查询*/
Linklist LocateElem(Linklist &L,int e){
    LNode *p=L->next;
    while (p!=NULL)
    {
        if (p->data==e){
            return p;
        }
        p=p->next;
    }
    return 0;
}
/*查找第i个节点*/
Linklist GetElem(Linklist &L,int i){
    
    LNode *p=L->next;
    for(int j=1;p&&j<i;j++){
        p=p->next;
    }
    return p;
}
/*删除第i个节点*/
void DeleteNode(Linklist &L,int i){
    LNode *p=GetElem(L,i-1);
    LNode *q=p->next;
    p->next=q->next;
    free(q);
}
/*节点s插入第i位*/
void InsertNode(Linklist &L,int i,int e){
    LNode *p=GetElem(L,i-1);
    LNode *s=(Linklist)malloc(sizeof(LNode));
    s->data=e;
    s->next=p->next;
    p->next=s;
}
int GetLength(Linklist &L){
    LNode *p=L->next;
    int count=0;
    while (p!=NULL)
    {
        count++;
        p=p->next;
    }
    return count;
}
/*打印链表*/
void display(Linklist &L){
    LNode *p;
    p=L->next;
    while (p!=NULL)
    {
        cout<<p->data<<" ";
        p=p->next;
    }
    cout<<endl;
}
int main()
{
    LNode *head;//定义一个头节点
    List_HeadInsert(head);
    display(head);

    List_TailInsert(head);
    display(head);

    return 0;
}